<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    // 显示当前时间
    // 控制台显示了date()对象的tostring结果，因此这里的这个长字符串实际上就是date对象的字符串表述
    console.log(new Date());

    // 我们用字符串实例化date()对象
    console.log(new Date('2015 11 12'));
    console.log(new Date('11 12 2015'));
    console.log(new Date('1 mar 2016 5:30'));


    // 我们传递所有的制定参数
    console.log(new Date(2015, 0, 1, 17, 05, 03, 120));

    // 如果只传递日期和时钟值
    console.log(new Date(2015, 0, 1, 17));

    // 这里需要注意的是，由于月份是从0开始的，所以这里的1指的是2月
    console.log(new Date(2016, 1, 9));

    // 如果我们传递的值越过了被允许的范围，Date对象会自行启动‘溢出式’进行处理。例如2月不存在30号这一天，所以他会自动解释为该年的三月一号
    console.log(new Date(2016, 1, 30));

    // 我们还可以通过timestamp的方式来初始化一个Date对象
    console.log(new Date(1357027200000));

    // 如果我们在调用date的时候没有使用new()操作符，那么无论是否传递了参数，所的字符串的内容都将是当前的日期和时间

    // date对象的方法
    var d = new Date(2015, 1, 1);
    console.log(d.toString());

    // 然后将其月份设置为3月份
    console.log(d.setMonth(2));
    console.log(d.toString());
    console.log(d.getMonth());

    // 例如Date.parse()方法会将其所接受的字符串转化为相应的timestamp格式，并返回
    console.log(Date.parse('Jan 11, 2018'));

    // 而Date.UTC()方法则可以接受包括年份/月份/日期在内的所有参数，并以此产生一个相应的符合格林尼治时间标准的timestamp值
    console.log(Date.UTC(2018, 0, 11));

    // 由于用date创建对象时可以接受一个timestamp参数，因此我们也可以直接将date.UTC的结果传递给该构造器。在下面的例子中，我们演示了如果在新建date()对象的过程中，将utc()返回的格林尼治时间转换为本地时间
    console.log(new Date(Date.UTC(2018, 0, 11)));
    console.log(new Date(2018, 0, 11));

    // ES5中提供了now()方法，以用于返回当前timestamp。
    console.log(Date.now());

    // 日期的内部表达式就是一个整数类型的timestamp，而它的其他表达形式只不过时这种内部形式的‘糖衣’。这么一来，我们就很容易理解为什么date对象的valueOf()方法返回的是一个timestamp值。
    console.log(new Date().valueOf());

    // 而将DATE转换为整形则只需要一个+号
    console.log(+ new Date());


    // 例子：计算生日
    // 计算2016年的6月20号是星期几
    var e = new Date(2017, 12, 28);
    console.log(e.getDay());
</script>
</body>
</html>
